モジュール詳細:反転黒色暗号

世界が生まれた暗黒のように、この暗号はあなたを終わらせるだろう。

モジュールは、3つのディスプレー、キーボード、英字が書かれた2つのボタン、及び現在のページを表示するボタン(送信ボタン)で構成されている。

右の英字を押すと、次のページに移動できる。左の英字を押すと前のページに移動できる。ページは全部で2ページある。

1ページ目には、上のディスプレーに6文字の暗号化された単語、真ん中のディスプレーにある単語が表示される。

ステップ1:エニグマ暗号

ここでは、1ページ目の上のディスプレーにある暗号化された単語と2ページ目の3つすべてのディスプレーが必要となる。

2ページ目には、ローター/リフレクターの設定、その下にローターの初期設定、一番下にプラグボードの初期設定が表示される。

ステップ1A:ローター/リフレクター/プラグボードの設定

これらは「リフレクター-下部ローター-中央ローター-上部ローター」の順で読む。上部ローターの真上にAからZの文字列を配置し、プラグボードとして使用する。

これらは「リフレクター-下部ローター-中央ローター-上部ローター」の順で読む。上部ローターの真上にAからZの文字列を配置し、プラグボードとして使用する。

下のディスプレーの回路図を用いて、エニグマ復号機を作成する。

ローターの真下にあるディスプレーには、それぞれ、下部、中央、上部ローターの初期配置を示している。左下の英字がその英字と同じになるようにローターを回転させる。

プラグボードの初期設定にある各英字のペアごとに、プラグボード上の2つの英字を入れ替える。

ローターI

EKMFLG DQVZNT OWYHXU SPAIBR CJ
ABCD*EF GHIJKL MNOPQ*R STUVWX YZ

ローターII

AJDKSI RUXBLH WTMCQG ZNPYFV OE
ABCDE*F GHIJKL MNOPQR* STUVWX YZ

ローターIII

BDFHJL CPRTXV ZNYEIW GAKMUS QO
ABCDEF GHI*JKL MNOPQR STUV*WX YZ

ローターIV

ESOVPZ JAYQUI RHXLNF TGKDCM WB
ABCDEF GHIJ*KL MNOPQR STUVW*X YZ

ローターV

VZBRGI TYUPSD NHLXAW MJQOFE CK
ABCDEF GHIJKL M*NOPQR STUVWX YZ*

ローターVI

JPGVOU MFYQBE NHZRDK ASXLIC TW
ABCDEF GHIJKL* MNOPQR STUVWX Y*Z

ローターVII

NZJHGR CXMYSW BOUFAI VLPEKQ DT
ABCDEF GH*IJKL MNOPQR STU*VWX YZ

ローターVIII

FKQHTL XOCBJS PDZRAM EWNIUY GV
ABC*DEF GHIJKL MNOP*QR STUVWX YZ

リフレクターA

ABCDEF GHIJKL MNOPQR STUVWX YZ
LUSNPQ OMJIYA HDGEFX CVBTZR KW

リフレクターB

ABCDEF GHIJKL MNOPQR STUVWX YZ
XQUMFE POWLTJ DZHGBV YKCRIA SN

リフレクターC

ABCDEF GHIJKL MNOPQR STUVWX YZ
ESKOAQ MJYHCP GTDLFU BNRXZV IW

エニグマ回路図

エニグマ回路

ABCDEFGHIJKLM NOPQRSTUVWXYZ
 
上部ローター
 
中央ローター
 
下部ローター
 
リフレクター

すべての設定が完了すると、使用準備が整う。はじめにステップ1Bを行い、暗号化された英字の一文字目を復号する。その後、ステップ1Cの通りにローターを回転させる。

ステップ1B:エニグマ復号機の使用方法

  • 1:単語内の英字を取得し、復号機のプラグボードの段からそれを探す。
  • 2:上部ローターの上段へ真下に進み、新しい英字を取得する。
  • 3:上部ローターの下段から、その新しい英字を探す。
  • 4:中央ローターの上段へ真下に進み、新しい英字を取得する。
  • 5:中央ローターの下段から、その新しい英字を探す。
  • 6:下部ローターの上段へ真下に進み、新しい英字を取得する。
  • 7:下部ローターの下段から、その新しい英字を探す。
  • 8:リフレクターの上段へ真下に進み、新しい英字を取得する。
  • 9:リフレクターの下段から、その新しい英字を探す。
  • 10:下部ローターの下段へ真上に進み、新しい英字を取得する。
  • 11:下部ローターの上段から、その新しい英字を探す。
  • 12:中央ローターの下段へ真上に進み、新しい英字を取得する。
  • 13:中央ローターの上段から、その新しい英字を探す。
  • 14:上部ローターの下段へ真上に進み、新しい英字を取得する。
  • 15:上部ローターの上段から、その新しい英字を探す。
  • 16:プラグボードの段へ真上に進み、復号された英字を取得する。

以下の例はIを使用し、復号後の英字Fを取得している。

ステップ1C:ローター回転の仕組み

次のセクションではローターの回転がどのように作動するかについて述べている。

ローターの下段には横にアスタリスクがついている英字が二つあることにお気づきだろうか。ローターの状態によって、以下のように異なる影響がある。

  • アスタリスクが中央ローターの左端にある場合、3つすべてのローターを回転させる。
  • そうでなければ、アスタリスクが上部ローターの左端にある場合、中央と上部の両方のローターが回転する。
  • そうでない場合、上部ローターのみが回転する。
  • 各回転は1段階だけ左に動かす。(例:A -> B, G -> H, Z -> Aなど)

ステップ1Bと1Cを単語の各英字に対して繰り返し、復号された単語を取得する。

ステップ2:スキュタレー転置

ここでは、ステップ1で取得した暗号化された単語が必要となる。

まず、シリアルナンバーの2文字目を取り、それを4で割った余りに2を足して、行数を決定する。

暗号化された各文字について、各アスタリスクを読み順でその文字に置き換える。それから、上から下、左から右の順に6つのアスタリスクを配置する。

最後に、英字を上から下、左から右に読む。

これで新しい暗号化単語が得られるはずである。

暗号化単語: UWHJIV
行数: N % 4 = 3 + 2 = 5
UV
W  
H  
J  
I  
新しい暗号化単語: UVWHJI

ステップ3:ディグラフィド暗号(亜種)

これには、ステップ2で得た暗号化された単語と1ページ目の真ん中と下のディスプレーに表示された単語、2つのボタンにある英字が必要となる。

真ん中と下のディスプレーは、2つのキーを作るために使用される。

真ん中のディスプレーの単語を使用して、重複する英字の2文字目以降を削除する。それから、アルファベット全体の文字列を取得し、この単語に表示された英字を削除する。

シリアルナンバーの最初の英字についてアルファベットにおける位置(A = 1,B = 2...Z = 26)が奇数の場合、単語の末尾にアルファベットを配置する。
そうでない場合、単語の先頭にアルファベットを配置する。

これが、キーAである。

下段の単語を使用し、重複する文字を削除し、2回目以降の出現を削除する。次に、アルファベット順に全ての文字を並べたものから、この単語に表示されている全ての文字を削除する。

シリアルナンバーの最後の英字についてアルファベットにおける位置(A = 1,B = 2...Z = 26)が偶数の場合、単語の末尾にアルファベットを配置する。
そうでない場合、単語の先頭にアルファベットを配置する。

これが、キーBである。

ページ番号/送信ボタンの上にある左のボタンに書かれた文字は、「#」に置き換えられ、その英字はキーAの末尾に追加される。これを右のボタンとキーBに対しても行う。英字が「#」の場合、「#」をキーの末尾に配置する。

キーAとキーBを、左から右、上から下に9文字ごとに3つの段に分ける。

最後に、1~9の数字文字列の真上にキーAを配置し、その横に読み順で1~9の順番になるように3×3の正方形型の数字文字列を配置する。それから、キーAがある数字文字列の真下にキーBを配置し、その横に上から下、左から右に1~9の順番になるように3×3の正方形型の数字文字列を配置する。

真ん中のディスプレー:COMBO
下のディスプレー:REFUND
シリアルナンバー:S73BW0
左のボタン:S
右のボタン:A
鍵A: B#DEFGHIJKLMNOQRUVWXYZPASTC
鍵B: ACFGHIJKMNPQRSTVWX#ZDOUBLEY

B#DEFGHIJ123
KLMNOQRUV456
WXYZPASTC789
123456789---
ACFGHIJKM147
NPQRSTVWX258
#ZDOUBLEY369

暗号化された単語を3組の英字のペアに分割する。各ペアに対して以下の指示に従う。

  • 1:キーAから一つ目の英字を見つける。
  • 2:キーBから二つ目の英字を見つける。
  • 3:一つ目の英字の列から、一つ目の数字を取得する。
  • 4:二つ目の英字の列から、三つ目の数字を取得する。
  • 5:見つけた各英字がある段を探し、そこから3×3のグリッド上の同じ段を参照する。両方に含まれている数字が一つだけあり、それが二つ目の数字である。
  • 6:数字を上から下に、今まで書いた数字の右に記していく。

これを読み順で読み、新たな3つの数字を取得する。3つの数字の組み合わせに対して以下の指示に従う。

  • 1:一つ目の数字を列、二つ目の数字を上の段に使用して一つ目の英字を取得する。
  • 2: 三つ目の数字を列、二つ目の数字を下の段に使用して二つ目の英字を取得する。
  • 注意:上のグリッドは一つ目の英字に対して使用し、下のグリッドは二つ目の英字に対して使用することになる。

これで復号された単語が得られるはずである。

暗号化単語: UVWHJI
鍵: 上記の表を使用して復号化プロセスを行う。

UV -> 857
WH -> 175
JI -> 916

数字を上下左右に並べ替える。
819
571
756
左から右、上から下に読む。

819 -> IM
571 -> PA
756 -> RT
復号された単語: IMPART

復号された単語を取得したら、それを送信する。入力を開始すると、全てのディスプレーが暗転し下のディスプレーに入力された文字が表示される。

入力を消去するには、いずれかの英字をクリックする。ページが移動し、入力した文字列が消去される。6文字を超える入力はできないようになっている。

入力に問題がなければ、「SUB」と書かれたボタンを押して、回答を送信する。ミスが記録された場合、モジュールの最初のページに戻るが、暗号の再生成はされない。